# @Time    :2025/4/1 11:57
"""
题目 3：电商商品系统
开发一个简单的电商商品系统，融合多种面向对象特性。
创建Product基类：
包含私有属性__name（商品名称）和__price（商品价格）。
提供公有方法get_name和get_price用于获取商品名称和价格。
提供公有方法display_info（空实现），用于展示商品信息。
创建Electronics类继承自Product类：
新增私有属性__brand（电子产品品牌）。
重写display_info方法，打印 “商品名称：{name}，价格：{price}，品牌：{brand}”。
创建Clothing类继承自Product类：
新增私有属性__size（衣服尺码）和__color（衣服颜色）。

重写display_info方法，打印 “商品名称：{name}，价格：{price}，尺码：{size}，颜色：{color}”。
创建ShoppingCart类：
包含私有属性__products，用于存储购物车中商品对象的列表。
提供公有方法add_product，用于向购物车中添加商品对象。
提供公有方法calculate_total_price，遍历__products列表，计算所有商品的总价并返回。
提供公有方法display_cart_info，遍历__products列表，调用每个商品的display_info方法。
"""


class Product:
    def __init__(self, name, price):
        self.__name = name
        self.__price = price

    def get_name(self):
        return self.__name

    def get_price(self):
        return self.__price

    def display_info(self):  # 用于展示商品信息
        pass


class Electronics(Product):  # 电子称
    def __init__(self, name, price, brand):
        super().__init__(name, price)
        self.__brand = brand

    def display_info(self):  # 用于展示商品信息
        name = self.get_name()
        price = self.get_price()
        print(f"商品名称：{name}，价格：{price},品牌：{self.__brand}")


class Clothing(Product):
    def __init__(self, name, price, size, color):
        super().__init__(name, price)
        self.__size = size
        self.__color = color

    def display_info(self):  # 用于展示商品信息
        name = self.get_name()
        price = self.get_price()
        print(f"商品名称：{name}，价格：{price},尺码：{self.__size}，颜色：{self.__color}")


"""
包含私有属性__products，用于存储购物车中商品对象的列表。
提供公有方法add_product，用于向购物车中添加商品对象。
提供公有方法calculate_total_price，遍历__products列表，计算所有商品的总价并返回。
提供公有方法display_cart_info，遍历__products列表，调用每个商品的display_info方法。
"""


class ShoppingCart:
    def __init__(self):
        self.__products = []

    def add_product(self, clothing):
        self.__products.append(clothing)

    def calculate_total_price(self):
        total = 0
        for product in self.__products:
            total += product.get_price()
        return total

    def display_cart_info(self):
        for product in self.__products:
            product.display_info()


sh1 = ShoppingCart()


e1 = Electronics("手机", 300, "苹果")
c1 = Clothing("裙子", 1200, "s", "粉色")


sh1.add_product(e1)
sh1.add_product(c1)
print("购物车的总价是:",sh1.calculate_total_price())
sh1.display_cart_info()








